For the purposes of this specification, the term “disk drive ” refers to the hardware that is used to physically store data. Usually, a disk drive comprises a physical medium or disk on which data is stored or written, and an interface to the physical medium. The interface, e.g., the Advanced Technology Attachment (ATA), or the Small Computer System Interface (SCSI) specification defines a command set that may be used by a controller of a host machine to read data from and write data to the disk.
In order to improve performance, most disk drives manufactured today include a write cache which can be selectively enabled or disabled. The write cache is usually an area of temporary volatile storage, e.g., Random Access Memory (RAM), that has a faster access time than the disk of a disk drive. When the write cache is enabled, the controller writes blocks of data received from the data source directly to the write cache and thereafter indicates to the source that the data has been written to the disk. By writing data directly to the write cache, through-put may be increased. At a later time, the controller transfers the data from the write cache to the disk in a process referred to as flushing the write cache or write cache synchronization.
Although writing the data directly to the write cache, as described above, improves through-put, (i.e., the rate at which data can be written to a disk) there is a risk that the data may be lost. For example, if there is a power failure before the write cache is flushed, then data in the write cache would be lost. Therefore, in mission critical applications, and in enterprise applications in general, the controller writes a block of data from the data source to the write cache, and flushes the block of data from the write cache by issuing a flush command which causes the contents of the write cache to be written or flushed to the disk.
In the case where the write cache is disabled altogether, through-put is reduced since the benefit of writing directly to the write cache (which has a faster access time than the disk) is lost. In the case where the controller writes to the write cache and thereafter issues a flush command to flush the write cache, there is a need to regain control of or re-arbitrate a bus connecting the controller to the write cache in order for the controller to issue the flush command. It will be appreciated that some of the performance gain that is achieved by writing to the write cache is lost due to delays incurred by the bus re-arbitration process.